/* “Copyright 2012 Megam Systems” This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.megam.deccanplato.provider.box.handler; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.content.StringBody; import org.apache.http.message.BasicNameValuePair; import org.joda.time.DateTime; import org.megam.deccanplato.http.TransportMachinery; import org.megam.deccanplato.http.TransportResponse; import org.megam.deccanplato.http.TransportTools; import org.megam.deccanplato.provider.BusinessActivity; import org.megam.deccanplato.provider.core.AdapterAccessException; import org.megam.deccanplato.provider.core.BusinessActivityInfo; import org.megam.deccanplato.provider.info.DateTimeTypeConverter; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import static org.megam.deccanplato.provider.Constants.*; import static org.megam.deccanplato.provider.box.Constants.*; public class FileImpl implements BusinessActivity { private Map<String, String> args; private BusinessActivityInfo bizInfo; @Override public Map<String, String> run() { Map<String, String> outMap=null; switch(bizInfo.getActivityFunction()) { case UPLOAD: outMap=upload(); break; case DOWNLOAD: outMap=download(); break; case DELETE: outMap=delete(); break; case SHARE: outMap=share(); break; case VIEW: outMap=view(); break; } return outMap; } /** * @return */ private Map<String, String> view() { Map<String, String> outMap = new HashMap<>(); final String BOX_DOWNLOAD="/files/"+args.get(FILE_ID); Map<String, String> headerMap =new HashMap<String, String>(); headerMap.put("Authorization", "BoxAuth api_key="+args.get(API_KEY)+"&auth_token="+args.get(TOKEN)); TransportTools tools = new TransportTools(BOX_URI+BOX_DOWNLOAD, null, headerMap); String responseBody = null; TransportResponse response = null; try { response = TransportMachinery.get(tools); responseBody = response.entityToString(); System.out.println("OUTPUT:"+responseBody); } catch (ClientProtocolException ce) { ce.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); } outMap.put(OUTPUT, responseBody); return outMap; } /** * @return */ private Map<String, String> share() { Map<String, String> outMap = new HashMap<>(); final String BOX_UPLOAD="/files/"+args.get(FILE_ID); Map<String, String> headerMap =new HashMap<String, String>(); headerMap.put("Authorization", "BoxAuth api_key="+args.get(API_KEY)+"&auth_token="+args.get(TOKEN)); Map<String, String> access=new HashMap<>(); access.put("access", "open"); access.put("unshared_at", "2013-02-28T12:07:46.981+05:30"); Map<String, String> pAccess=new HashMap<>(); pAccess.put("can_download ", "Company"); pAccess.put(" can_preview ", "Company"); Map<String, Map<String, String>> links=new HashMap<>(); links.put("shared_link", access); links.put("permissions", pAccess); TransportTools tools = new TransportTools(BOX_URI+BOX_UPLOAD, null, headerMap); GsonBuilder gson =new GsonBuilder(); gson.registerTypeAdapter(DateTime.class, new DateTimeTypeConverter()); Gson obj=gson.setPrettyPrinting().create(); System.out.println(obj.toJson(links)); tools.setContentType(ContentType.APPLICATION_JSON, obj.toJson(links)); String responseBody = ""; TransportResponse response = null; try { response = TransportMachinery.put(tools); responseBody = response.entityToString(); System.out.println("OUTPUT:"+responseBody); } catch (ClientProtocolException ce) { ce.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } outMap.put(OUTPUT, responseBody); return outMap; } /** * @return */ private Map<String, String> delete() { Map<String, String> outMap = new HashMap<>(); final String BOX_UPLOAD="/files/"+args.get(FILE_ID); Map<String, String> headerMap =new HashMap<String, String>(); headerMap.put("Authorization", "BoxAuth api_key="+args.get(API_KEY)+"&auth_token="+args.get(TOKEN)); headerMap.put("If-Match", args.get(ETAG)); TransportTools tools = new TransportTools(BOX_URI+BOX_UPLOAD, null, headerMap); String responseBody = ""; TransportResponse response = null; try { response = TransportMachinery.delete(tools); responseBody = response.entityToString(); System.out.println("OUTPUT:"+responseBody); } catch (ClientProtocolException ce) { ce.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } outMap.put(OUTPUT, responseBody); return outMap; } /** * @return */ private Map<String, String> download() { System.out.println("File Download"); Map<String, String> outMap = new HashMap<>(); final String BOX_DOWNLOAD="/files/"+args.get(FILE_ID)+"."+args.get(FILE_TYPE)+"/content"; Map<String, String> headerMap =new HashMap<String, String>(); headerMap.put("Authorization", "BoxAuth api_key="+args.get(API_KEY)+"&auth_token="+args.get(TOKEN)); TransportTools tools = new TransportTools(BOX_URI+BOX_DOWNLOAD, null, headerMap); String responseBody = null; TransportResponse response = null; try { response = TransportMachinery.get(tools); responseBody = response.entityToString(); System.out.println("OUTPUT:"+responseBody); } catch (ClientProtocolException ce) { ce.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); } outMap.put(OUTPUT, responseBody); return outMap; } /** * @return */ private Map<String, String> upload() { Map<String, String> outMap = new HashMap<>(); final String BOX_UPLOAD="/files/content"; Map<String, String> headerMap =new HashMap<String, String>(); headerMap.put("Authorization", "BoxAuth api_key="+args.get(API_KEY)+"&auth_token="+args.get(TOKEN)); MultipartEntity entity=new MultipartEntity(); FileBody filename=new FileBody(new File(args.get(FILE_NAME))); FileBody filename1=new FileBody(new File("/home/pandiyaraja/Documents/AMIs")); StringBody parent_id = null; try { parent_id=new StringBody(args.get(FOLDER_ID)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } entity.addPart("filename", filename); entity.addPart("parent_id", parent_id); TransportTools tools = new TransportTools(BOX_URI+BOX_UPLOAD, null, headerMap); tools.setFileEntity(entity); String responseBody = null; TransportResponse response = null; try { response = TransportMachinery.post(tools); responseBody = response.entityToString(); System.out.println("OUTPUT:"+responseBody); } catch (ClientProtocolException ce) { ce.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } outMap.put(OUTPUT, responseBody); return outMap; } @Override public String name() { return "file"; } /* (non-Javadoc) * @see org.megam.deccanplato.provider.BusinessActivity#setArguments(org.megam.deccanplato.provider.core.BusinessActivityInfo, java.util.Map) */ @Override public void setArguments(BusinessActivityInfo tempBizInfo, Map<String, String> tempArgs) { this.args=tempArgs; this.bizInfo=tempBizInfo; } }